package list;

import org.junit.Test;

import javax.swing.*;
import java.util.ArrayList;
import java.util.Collection;

public class CollectionAPI {
    /**
     * 存放相同的数据---数组   989个数据
     * int[] i=new int[989];  要求：1.定长2.类型固定
     * 需求：存放898个数据，而且数据不相同
     * 当我需求中，存在数据不确定，类型不确定------使用集合保存数据
     *
     * 集合：存放相同【不相同】的数据的容器，使用功能与数组类似，保存一组数据
     *
     * 包位置：Java.util
     * collection【接口】   顶级集合   容器
     * 作用：所有集合的顶级集合，规定所有集合和都具备方法
     * collection【接口】   可以创建对象---多态创建顶级集合
     * collection  引用=new  ArrayList（）;  爷爷类-->孙子类--继承关系--多态
     * List子接口【继承collection【接口】】，可以存重复元素，并且有序
     *     ArrayList实现类【继承List子接口】，理解为数组
     *     LinkedList实现类【继承List子接口】
     *     set子接口【继承collection【接口】】，不可以存在重复元素
     */
    @Test
    public void test() {
        //创建顶级集合【容器】
        Collection c = new ArrayList();
        /**
         * add(object o)方法  返回值：Boolean
         * 作用：向当前集合添加元素，元素可以为任意，才能入成功为true 失败false
         */
        c.add("喜喜");
        c.add("哈哈");
        c.add(new JFrame());
        System.out.println("打印集合：" + c);
        /**
         * remove(Object o)方法   返回值：boolean
         * 作用：删除集合中给定的元素，只会删除第一个元素
         * 需求：删除c集合中  元素 为1的内容
         * 底层：采用equals方法进行对比，移出内容与集合内容相等，移出不相等
         */
        c.remove(77);
        c.remove("喜喜");
        System.out.println("删除后的集合" + c);
        /**
         * size()方法  返回值：int  获取集合中元素个数---数组存在length，获取数组长度
         */
        int size = c.size();
        System.out.println("集合元素个数" + size);
        /**
         * clear  返回值：void
         *作用：清空集合
         * isEmpty()方法  返回值：Boolean
         * 作用：返回集合元素，如果有元素false  没有true
         */
        c.clear();//清空集合
        boolean b = c.isEmpty();//检测有无元素
        System.out.println("集合中没有元素" + b);
    }
    /**
     * 当前集合addALL（Collection  c[给定集合]）  操作：并集
     * 作用：将给定的集合中所有的元素添加至当前集合中，添加成功true
     * 返回值：boolean
     */
     @Test
    public  void  testAddALL(){
         Collection cl=new ArrayList();
         cl.add("喜喜");cl.add("哈哈");
         cl.add("呵呵");
         Collection c2=new ArrayList();
         cl.add("你好");cl.add("我好");
         cl.add("大家好");
         boolean b=cl.addAll(c2);
         System.out.println("集合并集结果");
     }
/**
 * contains()方法  返回值
 * 作用：判断当前集合是否包含给定元素，包含返回true 反之亦然
 * containsAll()方法 返回值：boolean
 * 作用：判断当前集合是否包含给定集合的所有元素
 * 当前集合.containsAll(给定集合)
 * 注意：判断所有集合元素一致，返回true
 *      元素存在   true   不存在   false
 *      总结：containsAll，个数不参考，存入顺序。元素数据是否一致
 *
 */
@Test
    public   void  testContains(){
    Collection cl=new ArrayList();
    cl.add("Java");  cl.add("net"); cl.add("go");
    Collection c2=new ArrayList();
    c2.add("go");    c2.add("Java");  c2.add("net");
    boolean b1=cl.containsAll(c2);
    System.out.println("c1是否包含c2"+b1);

    //判断集合中，是否否在Java 元素{数据}
    boolean b=cl.contains("Java");
    System.out.println("判断cl中是否存在j元素："+b);


}

/**
 * removeAll()   返回值：boolean  操作：交集
 * 作用：删除当前集合中给定集合中的共有元素
 * 总结：顺序不参考，共有元素，存在即删除，保留当前集合
 */
@Test
    public   void   testRemove(){
    Collection cl=new ArrayList<>();
    cl.add("喜喜");cl.add("哈哈");cl.add("呵呵");
    Collection c2=new ArrayList<>();
    c2.add("我好");c2.add("你好");c2.add("喜喜");
    boolean  b=cl.removeAll(c2);
    System.out.println("删除cl与c2集合中的交集的结果" );











}






















































































































}
